import warnings

import numpy as np
import matplotlib.pyplot as plt

# 关闭字体查找警告
warnings.filterwarnings("ignore", category=UserWarning, module="matplotlib.font_manager")

# 设置中文显示（使用系统通用字体族，自动适配已安装字体）
plt.rcParams["font.family"] = ["sans-serif"]  # 通用无衬线字体族
plt.rcParams["font.sans-serif"] = ["Arial Unicode MS", "Heiti TC", "sans-serif"]  # 优先使用系统已安装的中文字体
plt.rcParams["axes.unicode_minus"] = False  # 解决负号显示问题

# 示例数据（x: 时间，y: 股价）
x = np.array([1, 2, 3, 4, 5, 6, 7])  # 7天
y = np.array([12.5, 12.8, 13.1, 13.0, 13.5, 13.8, 14.0])  # 股价

# 一次多项式拟合（线性拟合）
# p.polyfit() 是 NumPy 中用于多项式拟合的核心函数，通过最小二乘法找到最适合数据的多项式曲线，广泛用于趋势分析、曲线拟合等场景
coefficients = np.polyfit(x, y, deg=1)  # 返回 [斜率m, 截距b]
m, b = coefficients

# 生成拟合曲线
y_fit = m * x + b

# 可视化
plt.scatter(x, y, label='原始数据')
plt.plot(x, y_fit, 'r--', label=f'拟合线: y={m:.2f}x + {b:.2f}')
plt.legend()
plt.show()
